/// Qualab - 24/11/2011

#pragma once

#define WIN32_LEAN_AND_MEAN
#include <windows.h>

namespace wink
{
    typedef INT8    Int8,  SByte;
    typedef INT16   Int16, Short;
    typedef INT32   Int32, Int;
    typedef INT64   Int64, Long;

    typedef UINT8   UInt8,  Byte;
    typedef UINT16  UInt16, UShort;
    typedef UINT32  UInt32, UInt;
    typedef UINT64  UInt64, ULong;

    typedef float   Float32, Float;
    typedef double  Float64, Double;

    typedef size_t  SizeType, IndexType;

    typedef int     Enum;

    typedef LPCTSTR     PString;

    struct Point : public POINT
    {
        Point();
        Point( int X, int Y );
        Point( const POINT& source );

        Point& operator = ( const POINT& source );
    };

    struct Rect : public RECT
    {
        Rect();
        Rect( int x, int y, SizeType width, SizeType height );
        Rect( const Rect& source );

        Rect& operator = ( const Rect& source );

        SizeType Width()  const;
        SizeType Height() const;

        int Left()   const;
        int Top()    const;
        int Right()  const;
        int Bottom() const;

        void SetLeft( int value );
        void SetTop( int value );

        void SetWidth( SizeType value );
        void SetHeight( SizeType value );
    };
}
